﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Inspired.Euler
{
    /// <summary>
    /// The sum of the squares of the first ten natural numbers is, 12 + 22 + ... + 102 = 385
    /// 
    /// The square of the sum of the first ten natural numbers is, (1 + 2 + ... + 10)2 = 552 = 3025
    /// 
    /// Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025  385 = 2640.
    /// Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.
    /// </summary>
    public static class Problem006
    {
        /// <summary>
        /// What is the difference between the sum of the squares and the square of the sums?
        /// </summary>
        [EulerProblem(6, Title = "What is the difference between the sum of the squares and the square of the sums?")]
        public static long Solve()
        {
            IEnumerable<int> numbers = Enumerable.Range(1, 100);
            return (
                (long)Math.Pow(numbers.Sum(), 2) -
                numbers.Aggregate(0L, (seed, item) => seed += (int)Math.Pow(item, 2)));
        }
    }
}
